package com.sg.dto.integration.framework;


import com.sg.common.dto.BaseDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;
import java.util.Objects;


@Data
public class BaseMetadataTypeDto extends BaseDto implements Serializable {

    /**
     * 类型ID:
     */
    @ApiModelProperty("类型ID")
    private String typeId;

    /**
     * 类型的编码:
     */
    @ApiModelProperty("类型的编码")
    private String typeCode;

    /**
     * 类型名称:
     */
    @ApiModelProperty("类型名称")
    private String typeName;

    /**
     * 操作人就职记录ID:
     */
    @ApiModelProperty("操作人就职记录ID")
    private String operationInductionId;

    /**
     * 操作时间:
     */
    @ApiModelProperty("操作时间")
    private Date operateTime;

    /**
     * 主体生命周期:
     */
    @ApiModelProperty("主体生命周期")
    private String subjectLifeCycle;

    /**
     * 创建人就职记录ID:
     */
    @ApiModelProperty("创建人就职记录ID")
    private String createInductionId;

    /**
     * 发布人就职记录ID:
     */
    @ApiModelProperty("发布人就职记录ID")
    private String releaseInductionId;

    /**
     * 存档人就职记录ID:
     */
    @ApiModelProperty("存档人就职记录ID")
    private String archiveInductionId;

    /**
     * 创建时间:
     */
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 发布时间:
     */
    @ApiModelProperty("发布时间")
    private Date releaseTime;

    /**
     * 存档时间:
     */
    @ApiModelProperty("存档时间")
    private Date archiveTime;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        if (!super.equals(o)) return false;
        BaseMetadataTypeDto that = (BaseMetadataTypeDto) o;
        return typeId == that.typeId && typeCode == that.typeCode && typeName == that.typeName && operationInductionId == that.operationInductionId && operateTime == that.operateTime && subjectLifeCycle == that.subjectLifeCycle && createInductionId == that.createInductionId && releaseInductionId == that.releaseInductionId && archiveInductionId == that.archiveInductionId && createTime == that.createTime && releaseTime == that.releaseTime && archiveTime == that.archiveTime;
    }

    @Override
    public int hashCode() {
        return Objects.hash(super.hashCode(), typeId, typeCode, typeName, operationInductionId, operateTime, subjectLifeCycle, createInductionId, releaseInductionId, archiveInductionId, createTime, releaseTime, archiveTime);
    }
}
